Software internationalization is the process of generalizing software to present and process a variety of languages, character sets, and cultural customs. Internationalized software can be localized (i.e., translated) so users can understand and utilize software in their own language.
Localizing a distributed application can create some challenges. Many Java-based software solutions are distributed applications and adopt the form of client-server architecture. Typically, the client is a “thin client” such as a web browser or a graphical user interface (GUI) application running on a user's personal computer, which may be used to accept and display data. In contrast, servers may perform many complex operations such as accessing databases or file systems, and processing requests from multiple clients. When internationalizing applications using the client-server architecture, the server is enabled to service multiple clients, and the language environment on each client computing device may be different from the language environment of other clients. Since the servers and clients are not necessarily using identical or compatible language environments, localizing (i.e., translating) and displaying the strings in the client's GUI with applications originating from the server may be challenging.
Current approaches to internationalization involve the sending of “locale” information from clients to servers supporting distributed localizability. Locale can be a set of parameters that define a user's language, geographic territory, character set used to encode the language, or combination thereof. The client may communicate its locale with a request to the server, and then the server may process the request and generate a translated string that matches client's locale. In practice, the sharing of “locale” and localized strings between the clients and servers with distributed localizability capability is non-trivial to implement using current solutions.